package com.lovesher.payment.common.service;

import java.util.List;

import com.lovesher.payment.common.resposity.base.Page;
import com.lovesher.payment.common.resposity.base.Pageable;
import com.lovesher.payment.common.resposity.search.BaseSearch;

/**
 * 
 * @ClassName: BaseService
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author tupx
 * @date 2018年11月12日 下午2:39:38
 * 
 * @param <T>
 */
public interface BaseService<T> {

	/**
	 * 根据ID查询记录
	 * 
	 * @param id
	 * @return
	 */
	public T selectById(Long id);

	/**
	 * 根据ID删除记录
	 * 
	 * @param id
	 * @return
	 */
	public int deleteById(Long id);

	/**
	 * 插入记录
	 * 
	 * @param record
	 * @return
	 */
	public T insert(T record);

	/**
	 * 更新记录
	 * 
	 * @param record
	 * @return
	 */
	public int update(T record);

	/**
	 * 基础条件查询
	 * 
	 * @param pageable
	 * @return
	 */
	public Page<T> findPage(Pageable pageable);

	/**
	 * 条件计数
	 * 
	 * @param pageable
	 * @return
	 */
	public Integer countPage(Pageable pageable);

	/**
	 * 批量删除
	 * 
	 * @param ids
	 */
	void removeBeans(Long[] ids);

	/**
	 * 查询所有
	 * 
	 * @return
	 */
	public List<T> findAll();

	/**
	 * 基础条件查询
	 * 
	 * @param pageable
	 * @return
	 */
	Page<T> findPageByBaseSearch(Pageable pageable, BaseSearch bean);

	/**
	 * 查询记录总数
	 * 
	 * @param pageable
	 * @return
	 */
	Integer count();
	
	/**
	 * 根据userId查询记录
	 * 
	 * @param userId
	 * @return
	 */
	public T selectByUserId(Long userId);
}
